3D-engine v4.0 - I've got some BALLS v1.0 (C) Sebastian Aaltonen 1999 (SHATTERSTORM) --------------------------------------------- Tämä dokumentti käsittelee kentän tekoa. --TAUSTAA----------------------------------------------------------------------- I've got some BALLS:n kentät on muodostettu 3d-malleistä, jotka on taas muodostettu polygoneista. Kenttien tekemiseen tarvitset siis ohjelman, joka pystyy tekemään 3-ulotteisia polygonimalleja. BALLS:n 3d-engine käyttää sen omaa tiedostomuodoa (.3DO). Pelin mukana tulleella kääntäjällä (MAKEMAP.EXE) voit kääntää 3D-mallinnusohjelmallasi tekemät kentät enginen ymmärtämään muotoon. Tällä hetkellä valmiina on ainoastaan kääntäjä varmaankin yleisimmälle 3D-mallintajalle, eli 3D Studiolle. Kääntäjä on suunniteltu 3DSMAX versioita 1.0/2.0/2.5/3.0 varten, mutta voi toimia muillakin. Kääntäjä käyttää 3DSMAX:n ASE-asciitallennusmuotoa. Jos omistat jonkun muun 3D-mallintajan, joka tallentaa omaan ascii-muotoonsa, olisitko ystävällinen ja lähettäisit muutaman mallitiedoston, että voisin tehdä kääntäjän myös kyseiselle ohjelmalle. Jos 3d-mallintajasi pystyy tallentamaan yleisesti käytetyssä 3DS-muodossa, niin voit myös tehdä kenttiä, joudut vain lähettämään ne minulle ensin kääntämistä varten. -- 1. Tästä se kaikki alkaa ---------------------------------------------------- Nämä ohjeet kentän teosta on suunniteltu 3D Studio MAX:ia varten. Jos tahdot tehdä kenttiä muilla ohjelmilla, joudut odottamaan uusien kääntäjien tuloa, tai lähettämään tuotoksesi aluksi minulle 3DS-muodossa: HUOM!!!!!!! 3d-studio MAX ei osaa ladata RLE-pakattuja BMP-kuvia, joten sinun täytyy muuntaa ne tavallisiksi BMP-kuviksi. Tähän tarkoitukseen yksi parhaista ohjelmista on Paint Shop Pro. Voit ladata kuvat yksi kerrallaan ja tallentaa ne normaaleiksi BMP-tiedostoiksi, tai käyttää batch-conversion työkalua. Jos et muuta kuvia, niin 3d-studio valittaa "FILE NOT FOUND", kun avaat kuvan, eikä näytä kuvaa. Käytännössä voit käyttää 3d-studiota RLE-pakatuillakin kuvilla, ne eivät vaan sitten näy kun teet kenttää. Peli osaa käyttää kumpiakin tiedostomuotoja. Oletan että osaat jo perusteet 3d Studio MAX:sta, enkä opeta niitä tässä osiossa. Kentänteossa kannattaa käyttää mahdollisimman yksinkertaisia objekteja ja polygonimäärä kannattaa valmiissa kentässä olla maksimissaan noin 1000-2000, riippuen tietenkin myös kentän koosta. Jos kenttäsi on selvästi suurempi, kuin normaalit, niin voit käyttää myös enemmän polygoneja. Kentän ja yksittäisten objektejen polygoni/vertexi -määrät näet helpoiten menusta FILE -> SUMMARY INFO. Polygonimäärän näet "Mesh totals - Faces" kohdasta. HUOM! Yhdessä objektissa ei saa olla enempää kuin 2000 polygonia tai vertexiä. Helpoiten pääset alkuun katsomalla "map.max" esimerkkikenttää... -- 2. Materiaalit -------------------------------------------------------------- Kun olet tehnyt muutamia objekteja kenttääsi, haluat varmaat jo nähdä miltä kenttäsi näyttäisi textuureiden kanssa. Menusta TOOLS -> MATERIAL EDITOR pääset materiaali-editoriin, jossa kaikki materiaalit tehdään. Uuden materiaalin teko: 1. Valitse tyhja materiaali (valmiina). 2. Muuta "Ambient" täysin mustaksi (basic parameters kohdasta) 3. Muuta "Diffuse" täysin valkoiseksi 4. Clikkaa alhaalta MAPS, ja sieltä valitse diffuse (klikkaa siitä: NONE) 5. Valitse "bitmap" (sivumenussa: New/All) -> ja paina OK 6. Clikkaa "Bitmap parameters - Bitmap" 7. Mene BALLS:n hakemistoon ja valitse sieltä sopiva tekstuuri (BMP). ("View..." napilla voit katsoa tekstuureja) -> ja sitten paina OK. 8. Laita "show map in viewport" päälle. (se kuutionappi ylärivistössä) 9. "Assign":aa materiaali kenttäsi objektiin (kolmas nappi rivistössä) Erikoishommat materiaaleille ---------------------------- Hohto: "BASIC PARAMETERS - AMBIENT" Jos vaihdat ambient-värin pois mustasta, niin pelissä objekti loistaa kyseistä väriä, vaikka se ei olisikaan valossa. Objektin väri: "BASIC PARAMETERS - DIFFUSE" Jos vaihdat diffuse-värin pois valkoisesta, niin pelissä objekti värjätään kyseisellä värillä. Täys-mustiin objekteihin eivät valot vaikuta ollenkaan. 2-puoleisuus: "BASIC PARAMETERS - 2-SIDED" Voit tehdä 2-puoleisia objekteja kun valitset tämän.Kaksipuoleisen objektin kaikki polygonit piirretään kummaltakin puolelta, mutta törmäysrutiinit eivät vielä toimi kuin yhdeltä puolelta. Alpha Blending: (eli läpinäkyvyys) "EXTENDED PARAMETERS - OPACITY - TYPE" FILTER-valinta tarkoittaa, että objekti ei ole läpinäkyvä. ADDITIVE-valinnalla saat läpinäkyvyyden, joka lisää väriä (kirkastaa). SUBTRACTIVE-valinnalla saat läpinäkyvyyden, joka tummentaa väriä. -- 3. Valot -------------------------------------------------------------------- Ilman valoja pelissä ei näe mitään, joten joudut käyttämään niitä. Perusvalo: 1. Create - Lights - Omni 2. Säädä väri kohdalleen color-napista. 3. Säädä valon koko "shadow parameters - size" -kohdasta. Size 10000 tarkoittaa päävaloa, joka yltää kaikkialle, eikä heikkene. 4. Säädä valon glow:n koko "shadow parameters - mapbias" -kohdasta 4.0 = normaali koko, 0 = ei glowwia, 20.0 = 5Xkoko yms... (UUTTA: tämä on muuttunut 0.9 versiosta) 5. Aseta valosi sopivaan paikkaan. Liikkuva valo: (lue erikoisobjektit kappale) "MOV=XXYY","SPD=?" Valo liikkuu tiettyä reittiä pitkin. Reitti tehdään POINTTEJEN avulla. Kaksi ensimmäistä lukua (XX) tarkoittavat reitin numeroa, ja loput kaksi (YY) tarkoittavat ensimmäistä reittipistettä, johon valo lähtee. SPD - määrite antaa valon kulkunopeuden. esim. MOV=0301_SPD=5 - Valo liikkuu reittiä 3 pitkin ja sen nopeus on 5. -- 4. Erikoisobjektit ----------------------------------------------------------- BALLSissa on muutama erikois-objektityyppi, jota joudut käyttämään. Kaikki objektejen erikoistyypit kirjoitetaan objektin NIMEEN, ja erotetaan toisistaan _ -merkillä Pyörivä objekti: "ROX=?","ROY=?","ROZ=?" Pyörivän objektin eri pyörimisakselit ja näiden pyörimisnopeudet. esim. ROX=5 - objekti pyörii x-akselin suunnassa nopeudella 5. ROZ=-3 - objekti pyörii z-akselin suunnassa vastapäivään nopeudella 3. Vauhtia antava objekti (trampoliinit ja vauhtinuolet yms...): "ADS=XXYYZZ" (nopea vauhti - soveltuu kimmottaviin tasoihin) "ADs=XXYYZZ" (10 x hitaampi vauhti - soveltuu vauhtinuoliin) Antaa pallolle vauhtia tiettyyn suuntaan. XX on nopeus. YY on kulma (vaakatasossa), niin että: 00= < 20= \/ 40= > 60= /\ (arvot 0-79) ZZ on kulma (pystytasossa), niin että: 00=ALAS 40=VAAKA 80=YLÖS (arvot 0-80) esim. ADS=100080 - Objekti antaa pallolle suoraan ylöspäin vauhtia nopeudella 10. Läpimentävä objekti: "NOCOL" Tälläisten objektejen läpi pallo menee, eivätkä ne vaikuta sen käyttäytymiseen millään tavalla. Special objekti: (älä käytä NOCOL:n kanssa. Vain 1 per objekti) "SP?" Objektin joku lisäkyky, kuten: SP2 - Portti, joka muuttaa pallon normaaliksi. SP3 - Portti, joka muuttaa pallon punaiseksi. SP4 - Portti, joka muuttaa pallon keltaiseksi. SP5 - Portti, joka muuttaa pallon siniseksi. SP6 - Portti, joka muuttaa pallon vihreäksi. Liikkuva objekti: "MOV=XXYY","SPD=?" Objekti liikkuu tiettyä reittiä pitkin. Reitti tehdään POINTTEJEN avulla. Kaksi ensimmäistä lukua (XX) tarkoittavat reitin numeroa, ja loput kaksi (YY) tarkoittavat ensimmäistä reittipistettä, johon objekti lähtee. SPD - määrite antaa objekti kulkunopeuden. esim. MOV=0301_SPD=5 - Objekti liikkuu reittiä 3 pitkin ja sen nopeus on 5. -- 4. Pisteet ------------------------------------------------------------------ Kaikki erikoistavarat, pallon aloituspaikka ja reittipisteet merkitään POINT-objektityypillä. (CREATE - HELPERS - POINT) Pisteiden tyyppi riippuu niiden nimestä: START - Pallon aloituspaikka DIA - Kerättävät timantit ROU=XXYY - Reittipiste: XX=reitin numero, YY=monesko reitin piste tämä on. RWT=? - Objektejen odotusaika tässä reittipisteessä (60 = 1 sekunti) RSP=? - Objektejen nopeuskerroin tässä pisteessä (100 = 100%, yms....) oletuksena 100%, jollei määritetty. RXA=? - Objektin kulmat reittipisteessä (? = kulma asteina) RYA=? oletuksena 0 astetta, ellei määritetty. RZA=? (Näiden avulla saat objektin kääntymään reitin mukaan) Reitti pisteet: (lue erikoisobjektit kappale) "ROU=XXYY" Tämä piste toimii reittipisteenä muille objekteille. XX on reitin numero, ja YY kertoo monesko reitin piste tämä on. Objektit kulkevat reittiä pitkin niin, että ne menevät reittipisteestä aina seuraavaan. Viimeisen reittipisteen jälkeen ne lähtevät taas reitin ensimmäiseen pisteeseen. esim. ROU=0402_RWT=120 - Reitin 4 toinen reittipiste. Pisteessä kappale pysähtyy kahdeksi sekunniksi. ROU=0101_RYA=90 - Reitin 1 ensimmäinen reittipiste. Kappaleen y-kulma on tässä kohdassa reittiä 90 astetta. Liikkuva piste: (lue erikoisobjektit kappale) "MOV=XXYY","SPD=?" Piste liikkuu tiettyä reittiä pitkin. Reitti tehdään POINTTEJEN avulla. Kaksi ensimmäistä lukua (XX) tarkoittavat reitin numeroa, ja loput kaksi (YY) tarkoittavat ensimmäistä reittipistettä, johon piste lähtee. SPD - määrite antaa pistee kulkunopeuden. esim. MOV=0301_SPD=5 - Piste liikkuu reittiä 3 pitkin ja sen nopeus on 5. DIA_MOV=0501_SPD=2 - Piste (joka on timantti) liikkuu reittiä 5 pitkin ja sen nopeus on 2. -- 5. Taustakuva --------------------------------------------------------------- Pelin kenttien taustalla on taustakuva. Se on BMP-kuva, jota "vieritetään" taustalla. Näin teet taustakuvan: 1. Tee aluksi perus materiaali, johon lataat halutun BMP:n diffuseksi. 2. Päävalikosta clikkaa RENDERING - ENVIROINMENT 3. Clikkaa "enviroinment map" laatikkoa. (NONE) 4. Aseta BROWSE FROM "Mtrl editor"-asetukseen, ja valitse taustakuvan BMP valikosta. (siinä on vihreä laatikko edessä) 5. Valitse INSTANCE seuraavasta kysymyksestä. (ja sitten OK) -- 6. Optimointia -------------------------------------------------------------- Mainitsin ensimmäisessä osiossa 1000-2000 polygonin maksimi suosituksesta. Tietenkin on voinut käydä niin, että kenttäsi on ylittänyt tämän rajan roimasti. Ja vaikka ei olisikaan, on optimointi aina paikallaan. "File - Summary info":n avulla voit tarkistaa kenttäsi yhteis polygonimäärän. Polygonimäärän näet "Mesh totals - Faces" kohdasta. Käytä jokaiseen objektiin "Modify - Optimize":ia. Voit säätää optimizen tehoa lisäämällä face/edge -thresh arvoa. Aina kun suurempi optimointi sitä vähemmän yksityiskohtia jää jäljelle, joten kannattaa kokeilla useita eri vaihtoehtoja parhaan suhteen löytämiseksi. Optimizen jälkeen objektin textuurikoordinaatit menevät sekaisin, joten käytä jokaiseen optimoituun objektiin optimoinnin jälkeen myös "Modify - UVW-mapping":ia palauttaaksesi textuurikoordinaatit kohdalleen. "Box-mapping" on paras vaihtoehto useimmissa tapauksissa. Kannattaa käyttää objekteihin "EDIT MESH":iä, ja poistaa sen avulla facet, jotka eivät tule pelissä näkyviin. Kuten peliradan pohjafacet. HUOM! Älä tee pallolle rataa litistämällä BOX:eja millin ohuisiksi, vaan jos haluat ohuita tasoja, niin poista "EDIT MESH":llä BOX:in ala- ja sivufacet ja jätä vain päälliface. (muista käyttää 2sided texturointia) HUOM! Pallo pomppaa vain facejen toiselta puolelta ja menee toisen puolen läpi, vaikka facet olisivatkin 2sided texturoituja. Jos tahdot vaihtaa facejen "toimivaa" puolta, niin vaihto onnistuu NORMAL-työkalun avulla, kohdasta "FLIP NORMALS". -- 7. Exportataan kenttä ASE:ksi ----------------------------------------------- BALLS:n kääntäjä(MAKEMAP.EXE) osaa toistaiseksi lukea vain ASE-tietostomuodossa olevia 3D-malleja. Eli sinun on exportattava 3D-mallisi ASE-muotoon. (Muista aina myös tallentaa normaalisti MAX-muotoon, koska 3D-Studio ei osaa ladata takaisin ASEja...) Näin se käy: 1. File - Export 2. Valitse ASE-muoto. (Ascii Scene Export) 3. Mene BALLS:in MAPS-hakemistoon 4. Kirjoita kenttäsi nimi ja paina OK. 5. Ascii-export valikko tulee esiin, merkkaa (vain) seuraavat: - Mesh Definition - Materials - Mapping Coordinates - Geometric - Lights - Helpers - Use keys 6. Paina OK:ta kun olet valmis. -- 8. MAKEMAP.EXE --------------------------------------------------------------- Avaa DOS-prompti ja mene BALLS:n MAPS-hakemistoon. Varmista, että tekemäsi kenttä on hakemistossa (kenttä.ase). MAKEMAP:n avulla voit nyt kääntää kenttäsi sellaiseen muotoon, että 3d-engine osaa käyttää sitä. Eli kirjoita (DOS): MAKEMAP kenttä esim: MAKEMAP cybercity Ruudulle pitäisi tulla kaikennäköistä roskaa jonkun aikaa. Jos kääntäjä valittaa, että jossain kenttäsi objektissa on liikaa vertexeja, tvertexejä tai faceja, niin avaa kenttäsi taas 3d-studiolla, ja käytä objektiin optimizea. Nyt voit kokeilla kenttääsi SINGLE-MAP -vaihtoehdolla alkumenusta, mutta lue sen jälkeen eteenpäin... (jos kenttää ei näy valikossa, varmista, että tallensit sen varmasti MAPS-hakemistoon) -- 9. SE EI TOIMI!!!!! --------------------------------------------------------- On mahdollista, että peli kaatuu, kun yrität käynnistää kenttääsi. Vikoja voi olla useita. Tässä yleisimpiä, joita olen huomannut kavereitteni kentissä. 1. Kentän textuurejen tiedostonimet saavat olla korkeintaan 8 kirjainta pitkiä. 2. Textuurit pitää olla BMP-muodossa, niiden pitää olla laatikon muotoisia ja niiden leveys ja korkeus täytyy olla 2-potensseja eli esim. 128x128, 64x64, 32x32, 16x16.... Textuurejen maksimikoko on 256x256... (nämä rajoitukset johtuvat joidenkin 3d-korttejen rajoittuneisuudesta, mutta koska pelin täytyy toimia mahdollisimman monella 3d-kortilla on näitä rajoituksia noudatettava) 3. Jos textuurihakemistosi(=BALLS) on sellaisessa paikassa, että sen hakemistopolussa on pitkiä tiedostonimiä, voi tulla ongelmia johtuen DOS-kääntäjistä. 4. Jokin objektisi voi sisältää yli 2000 polygonia tai vertexiä -> käytä optimizea. 5. Kentässä pitää olla START-paikka ja ainakin yksi timantti (DIA). ... Jos et pääse alkuun, niin katsele "map.max" esimerkkikenttää, ja kokeile kääntää se toimivaksi kentäksi... -------------------------------------------------------------------------------- Mailaa jos et ymmärtänyt jotain, joku asia oli virheellisesti selitetty, tai jos et saanut kenttääsi toimimaan. Yhteystiedot: ------------- MAIL: seppo.j.aaltonen@kolumbus.fi SHATTERSTORM WWW-SIVUT: www.kolumbus.fi/seppo.j.aaltonen/shatter